package com.ehome.poct.base.api.virtual;

import com.ehome.core.service.CrudService;
import com.ehome.poct.base.api.dto.device.*;
import com.ehome.poct.base.api.vo.device.TestDeviceClinicVO;
import com.ehome.poct.base.api.vo.device.TestDevicePrinterVO;
import com.ehome.poct.base.api.vo.device.TestDeviceVO;

import java.util.List;

/**
 * 设备表Service
 *
 * @author muqiu
 * @Date 2022-02-24 09:23
 */
public interface TestDeviceService extends CrudService<TestDeviceDTO>{

    /**
     * 根据sno拿设备dto
     * @param sno
     * @return
     */
    TestDeviceVO getBySno(String sno);
    
    List<TestDeviceClinicVO> getDeviceBySno(TestDeviceClinicDTO testDeviceClinicDTO);

    Boolean isExistence(String sno);

    Boolean addDevice(String sno,Integer deviceType);

    /**
     * 修改血常规设备状态
     * @param dto
     */
    void editStatus(DeviceStatusDTO dto);

    /**
     * 校验传入的诊所ID,和设备编号绑定关系是否一致v
     * @param sno
     * @param clinicId
     * @return
     */
    Boolean isBind(String sno,Long clinicId);
    
    /**
     * 根据诊所ID查找诊所的设备信息
     * @param clinicId 诊所Id
     * @return
     */
    List<TestDeviceVO> getByClinic(Long clinicId);
    
    
    /**
     * 根据设备编号+设备类型+诊所ID 返回设备信息
     * @param clinicId
     * @param sno
     * @param deviceType
     * @return
     */
    TestDeviceVO getByClinic(Long clinicId, String sno, Integer deviceType);
    
    void versionReport(VersionReportDTO dto);
    


    /**
     * 根据设备类型+诊所ID 返回设备信息
     * @param clinicId
     * @param deviceType
     * @return
     */
    TestDeviceVO getByClinic(Long clinicId,  Integer deviceType);

    /**
     * 获取所有绑定诊所ID
     *
     * @return
     */
    List<Long> getAllBindClinic();

    /**
     * 更新设备连接打印机信息
     * @param testDevicePrinterDTO
     */
    void devicePrinter(TestDevicePrinterDTO testDevicePrinterDTO);

    /**
     * 获取设备连接打印信息
     * @param sno
     * @return
     */
    List<TestDevicePrinterVO> getDevicePrinter(String sno);

    void insetOrUpdate(TestDeviceDTO dto);
}
